The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely complicated devices. To be sure, today's computers are more sophisticated than early systems such as the EDVAC. Fundamentally speaking, though, the most basic requirements levied upon computer systems have not changed. Now, as in the past, a computer system's job is to access, manipulate, and store information. This fact is true regardless of the type or vintage of computer system.
A typical computer system stores as a series of magnetic transitions on magnetic medium, such as a direct access storage device (“DASD”). The physical location of, and the relationship between, these magnetic transitions are governed by set of rules called a file system. Most file systems divide the magnetic media into a large number of sectors. When the computer system wants to store a new file on the DASD device, the DASD's file system manager program will assign a group of sectors to store the data. Most file systems also allocate a few extra sectors at this time so that the computer can add data to the file in the future.
If the file grows too large to be stored by the original allocation of sectors, the file system manager will allocate additional sectors (also known as an “extent”) to extend the file, and then logically link the original sectors to the new extent. Although this process is desirable because it allows the file system to store arbitrarily large files, the process of creating an extent requires more computer resources than does the process of merely adding additional data to an existing allocation of sectors. That is, each time the computer fills up an existing allocation and must create an extent, it slows down. The extra time required can, in turn, create a bottleneck because no processor can run at maximum efficiency if that processor is incapable of quickly obtaining the data upon which it is operating. This problem is a particular concern in high performance computers, such as servers, mainframe computers, midrange computers, because they typically need to access significant amounts of data.
One partial solution to these problems is to allocate a large number of sectors to the original file and any extents, thereby minimizing the number of times that the file manager has to create a new extent. One drawback to this method, however, is that it wastes significant amount of disk space, which hurts the drive manufacturer's price-to-performance ratio.
These problems have become an increasing concern with the increasing of stream files. These files generally comprise a continuous stream of bits, such as files and documents, stored in folders, and are desirable because they are well suited for storing large blocks of data, such as the text of a document, images, audio, and video. Unfortunately, the ultimate size of these files is difficult for file system manager to predict.
Accordingly, there is a need for an improved method of allocating storage to data files, particularly stream files.